package CONTABILIDAD_MODELO;
import Conexion.Conexion;
import java.sql.SQLException;
import java.sql.ResultSet;
import java.util.ArrayList;
import java.util.List;
import java.util.Date;
import java.text.SimpleDateFormat;

public class CON_PARAMETROS_FACTURAS{
	private double NRO_INICIAL_DOSIFICACION;
	private String ESTADO_TALONARIO;
	private Date TIEMPO_VIGENCIA;
	private String NRO_AUTORIZACION;
	private String LLAVE_CIFRADO;
	private double NRO_FINAL_DOSIFICACION;
	private double ID;
	private Conexion con = null;

	public CON_PARAMETROS_FACTURAS(){}

	public CON_PARAMETROS_FACTURAS(Double NRO_INICIAL_DOSIFICACION,String ESTADO_TALONARIO,Date TIEMPO_VIGENCIA,String NRO_AUTORIZACION,double NRO_FINAL_DOSIFICACION,double ID, String LLAVE_CIFRADO){
		this.NRO_INICIAL_DOSIFICACION =NRO_INICIAL_DOSIFICACION;
		this.ESTADO_TALONARIO =ESTADO_TALONARIO;
		this.TIEMPO_VIGENCIA =TIEMPO_VIGENCIA;
		this.NRO_AUTORIZACION =NRO_AUTORIZACION;
		this.NRO_FINAL_DOSIFICACION =NRO_FINAL_DOSIFICACION;
		this.ID =ID;
                this.LLAVE_CIFRADO = LLAVE_CIFRADO;
	}

	public boolean Insertar(){
		try{
			String consulta = "insert into BROKER.CON_PARAMETROS_FACTURAS(NRO_INICIAL_DOSIFICACION,ESTADO_TALONARIO,TIEMPO_VIGENCIA,NRO_AUTORIZACION,NRO_FINAL_DOSIFICACION,ID, LLAVE_CIFRADO) VALUES ("+NRO_INICIAL_DOSIFICACION+",'"+ESTADO_TALONARIO+"','"+getTIEMPO_VIGENCIA()+"','"+NRO_AUTORIZACION+"',"+NRO_FINAL_DOSIFICACION+","+ID+", '"+LLAVE_CIFRADO+"')";
			con.EjecutarSentencia(consulta);
			return true;
		}
		catch(Exception e){
			e.printStackTrace();
			return false;
		}
	}
	public boolean anular(double id){
		try{
			String consulta = "update BROKER.CON_PARAMETROS_FACTURAS set ESTADO_TALONARIO=1 where id = "+id;
			con.EjecutarSentencia(consulta);
			return true;
		}
		catch(Exception e){
			e.printStackTrace();
			return false;
		}
	}

	public boolean EliminarXid(){
		try{
			String consulta = "delete from BROKER.CON_PARAMETROS_FACTURAS where ID = "+getID();
			con.EjecutarSentencia(consulta);
			return true;
			}
		catch(Exception e){
			e.printStackTrace();
			return false;
		}
	}
        
	public boolean UPDATE(){
		try{
			String consulta = "update  BROKER.CON_PARAMETROS_FACTURAS set NRO_INICIAL_DOSIFICACION="+NRO_INICIAL_DOSIFICACION+", ESTADO_TALONARIO='"+ESTADO_TALONARIO+"', TIEMPO_VIGENCIA='"+getTIEMPO_VIGENCIA()+"', NRO_AUTORIZACION='"+NRO_AUTORIZACION+"', LLAVE_CIFRADO='"+LLAVE_CIFRADO+"', NRO_FINAL_DOSIFICACION="+NRO_FINAL_DOSIFICACION+"  where ID = "+getID();
			con.EjecutarSentencia(consulta);
			return true;
			}
		catch(Exception e){
			e.printStackTrace();
			return false;
		}
	}

        public CON_PARAMETROS_FACTURAS BuscarParametro(double SUCURSAL){
		try{
                    String consulta = "SELECT p.* FROM BROKER.CON_PARAMETROS_FACTURAS p, BROKER.CON_SUCURSAL_PARAMETROS, BROKER.RHH_SUCURSAL WHERE (CON_SUCURSAL_PARAMETROS.ID_PARAMETROS_FACTURA = p.ID) AND (CON_SUCURSAL_PARAMETROS.ID_SUCURSAL = RHH_SUCURSAL.ID) AND (p.ESTADO_TALONARIO = '0'AND (RHH_SUCURSAL.ID = "+SUCURSAL+"))";
			ResultSet rs = con.EjecutarConsulta(consulta);
			return Cargar(rs).get(0);
                }
		catch(Exception e){
			e.printStackTrace();}
			return null;
	}
        
	public CON_PARAMETROS_FACTURAS BuscarXid(double id){
		try{String consulta = "select * from BROKER.CON_PARAMETROS_FACTURAS where ID = "+id;
			ResultSet rs = con.EjecutarConsulta(consulta);
			return Cargar(rs).get(0);}
		catch(Exception e){
			e.printStackTrace();}
			return null;
	}
        
	public double BuscarNumeroFact(double idSuc){
		try{String consulta = "SELECT (COB_FACTURA.NUMERO_FACTURA) as numero  FROM BROKER.COB_FACTURA , BROKER.CON_PARAMETROS_FACTURAS where COB_FACTURA.NUMERO_FACTURA IN( SELECT MAX (COB_FACTURA.NUMERO_FACTURA) FROM BROKER.COB_FACTURA ) AND COB_FACTURA.ID_SUCURSAL ="+idSuc+" AND CON_PARAMETROS_FACTURAS.ESTADO_TALONARIO=1";
			ResultSet rs = con.EjecutarConsulta(consulta);
			rs.next();
                        return rs.getDouble("numero");
                }
		catch(Exception e){
			e.printStackTrace();}
			return 0;
	}
        
	public CON_PARAMETROS_FACTURAS BuscarXNRO_AUTORIZACION(String NRO_AUTORIZACION){
		try{String consulta = "select * from BROKER.CON_PARAMETROS_FACTURAS where NRO_AUTORIZACION = '"+NRO_AUTORIZACION+"'";
			ResultSet rs = con.EjecutarConsulta(consulta);
			return Cargar(rs).get(0);}
		catch(Exception e){
			e.printStackTrace();}
			return null;
	}

	public List<CON_PARAMETROS_FACTURAS> Todos(double id_sucursal){
		try{
                    String consulta = "SELECT CON_PARAMETROS_FACTURAS.*,\n" +
                                    "CON_PARAMETROS_FACTURAS.*\n" +
                                    "FROM BROKER.CON_PARAMETROS_FACTURAS, BROKER.CON_SUCURSAL_PARAMETROS, BROKER.RHH_SUCURSAL\n" +
                                    "WHERE (CON_SUCURSAL_PARAMETROS.ID_PARAMETROS_FACTURA =\n" +
                                    "CON_PARAMETROS_FACTURAS.ID)\n" +
                                    "AND (CON_SUCURSAL_PARAMETROS.ID_SUCURSAL = RHH_SUCURSAL.ID)\n" +
                                    "AND (CON_PARAMETROS_FACTURAS.ESTADO_TALONARIO = '0')\n" +
                                    "AND (RHH_SUCURSAL.ID = "+id_sucursal+")";
			ResultSet rs = con.EjecutarConsulta(consulta);
			return Cargar(rs);}
		catch(Exception e){
			e.printStackTrace();}
			return null;
	}
	public List<CON_PARAMETROS_FACTURAS> TodosDisponibles(){
		try{String consulta = "select * from BROKER.CON_PARAMETROS_FACTURAS where ESTADO_TALONARIO = '0'";
			ResultSet rs = con.EjecutarConsulta(consulta);
			return Cargar(rs);}
		catch(Exception e){
			e.printStackTrace();}
			return null;
	}

	public List<CON_PARAMETROS_FACTURAS> Cargar(ResultSet rs){
		try{
			List<CON_PARAMETROS_FACTURAS> lista = new ArrayList<CON_PARAMETROS_FACTURAS>();
			while(rs.next()){
				CON_PARAMETROS_FACTURAS objeto = new CON_PARAMETROS_FACTURAS();

				objeto.setNRO_INICIAL_DOSIFICACION(rs.getDouble("NRO_INICIAL_DOSIFICACION"));
				objeto.setESTADO_TALONARIO(rs.getString("ESTADO_TALONARIO"));
				objeto.setTIEMPO_VIGENCIA(rs.getDate("TIEMPO_VIGENCIA"));
				objeto.setNRO_AUTORIZACION(rs.getString("NRO_AUTORIZACION"));
				objeto.setLLAVE_CIFRADO(rs.getString("LLAVE_CIFRADO"));
				objeto.setNRO_FINAL_DOSIFICACION(rs.getDouble("NRO_FINAL_DOSIFICACION"));
				objeto.setID(rs.getDouble("ID"));
				 objeto.setCon(con);
				lista.add(objeto);
			}
			return lista;
		}
		catch(SQLException ex){
			ex.printStackTrace();
		return null;}
	}

	public double getNRO_INICIAL_DOSIFICACION(){
		return NRO_INICIAL_DOSIFICACION;
	}
	public void setNRO_INICIAL_DOSIFICACION(double NRO_INICIAL_DOSIFICACION){
		this.NRO_INICIAL_DOSIFICACION=NRO_INICIAL_DOSIFICACION;
	}

	public String getESTADO_TALONARIO(){
		return ESTADO_TALONARIO;
	}
	public void setESTADO_TALONARIO(String ESTADO_TALONARIO){
		this.ESTADO_TALONARIO=ESTADO_TALONARIO;
	}

	public String getTIEMPO_VIGENCIA(){
	SimpleDateFormat sdf = new SimpleDateFormat("dd/MM/yyyy");
		return sdf.format(TIEMPO_VIGENCIA);
	}
	public void setTIEMPO_VIGENCIA(Date TIEMPO_VIGENCIA){
		this.TIEMPO_VIGENCIA=TIEMPO_VIGENCIA;
	}

	public String getNRO_AUTORIZACION(){
		return NRO_AUTORIZACION;
	}
	public void setNRO_AUTORIZACION(String NRO_AUTORIZACION){
		this.NRO_AUTORIZACION=NRO_AUTORIZACION;
	}

	public double getNRO_FINAL_DOSIFICACION(){
		return NRO_FINAL_DOSIFICACION;
	}
	public void setNRO_FINAL_DOSIFICACION(double NRO_FINAL_DOSIFICACION){
		this.NRO_FINAL_DOSIFICACION=NRO_FINAL_DOSIFICACION;
	}

	public double getID(){
		return ID;
	}
	public void setID(double ID){
		this.ID=ID;
	}

	public Conexion getCon() {
		return con;
	}
	public void setCon(Conexion con) {
		this.con = con;
	}

    public String getLLAVE_CIFRADO() {
        return LLAVE_CIFRADO;
    }

    public void setLLAVE_CIFRADO(String LLAVE_CIFRADO) {
        this.LLAVE_CIFRADO = LLAVE_CIFRADO;
    }

        
        
}
